HandToHand
HandToHand Create new Handle and copy Handle data to it
#include <OSUtils.h> Operating System Utilities
OsErr HandToHand(theHandle );
Handle *theHandle ; address of Handle to copy; receives new Handle
returns memory-related Error Code; 0=no error
HandToHand creates a new Handle (see NewHandle) and copies data from an
existing Handle into the new one.
theHandle is the address of an existing Handle. On entry, it is a Handle leading
to data you wish to copy. On return, it is overwritten by a
newly- created Handle that leads to a relocatable block containing a
copy of the data.
Returns: an OSErr; an integer Error Code. It will be one of:
noErr (0) No error
memFullErr (-108) Not enough room in heap for new Handle
nilHandleErr (-109) theHandle was invalid on entry
memWZErr (-111) Attempt to operate on a free block

Notes: Since HandToHand cleverly overwrites the original value of theHandle,
the normal technique is to make a copy of the original before the call; e.g:
Handle srcHandle, destHandle;
srcHandle=GetResource( 'CURS', watchCursor );
destHandle = srcHandle;
if ( HandToHand( &destHandle ) ) {
. . . an error occurred . . .
} . . . else, a copy of watchCursor is now in destHandle . . .